home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 March / PCWMAR09.iso / Software / Freeware / NSIS 2.41 / nsis-2.41-setup.exe / Examples / WordFunc.nsi < prev    next >
Encoding:
Text File  |  2008-01-27  |  16.3 KB  |  545 lines

  1. ;_____________________________________________________________________________
  2. ;
  3. ;                          Word Functions
  4. ;_____________________________________________________________________________
  5. ;
  6. ; 2005 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
  7.  
  8. Name "Word Functions"
  9. OutFile "WordFunc.exe"
  10. Caption "$(^Name)"
  11. XPStyle on
  12. RequestExecutionLevel user
  13.  
  14. Var INI
  15. Var HWND
  16. Var STATE
  17.  
  18. !include "WinMessages.nsh"
  19. !include "WordFunc.nsh"
  20.  
  21. !insertmacro WordFind
  22. !insertmacro WordFind2X
  23. !insertmacro WordReplace
  24. !insertmacro WordAdd
  25. !insertmacro WordInsert
  26. !insertmacro StrFilter
  27. !insertmacro VersionCompare
  28. !insertmacro VersionConvert
  29.  
  30. Page Custom ShowCustom LeaveCustom
  31.  
  32. Function ShowCustom
  33.     InstallOptions::initDialog /NOUNLOAD "$INI"
  34.     Pop $hwnd
  35.     InstallOptions::show
  36.     Pop $0
  37. FunctionEnd
  38.  
  39. Function LeaveCustom
  40.     ReadINIStr $0 $INI "Settings" "State"
  41.     StrCmp $0 0 Enter
  42.  
  43.     GetDlgItem $1 $HWND 1202
  44.     EnableWindow $1 1
  45.     GetDlgItem $1 $HWND 1203
  46.     ShowWindow $1 1
  47.     GetDlgItem $1 $HWND 1204
  48.     ShowWindow $1 1
  49.     GetDlgItem $1 $HWND 1206
  50.     EnableWindow $1 1
  51.     GetDlgItem $1 $HWND 1205
  52.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  53.     GetDlgItem $1 $HWND 1206
  54.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  55.  
  56.     ReadINIStr $0 $INI "Field 1" "State"
  57.     StrCmp $0 "1. WordFind        (Find word by number)" 0 WordFind2Send
  58.     GetDlgItem $1 $HWND 1202
  59.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
  60.     GetDlgItem $1 $HWND 1204
  61.     SendMessage $1 ${WM_SETTEXT} 1 "STR:-4"
  62.     GetDlgItem $1 $HWND 1210
  63.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
  64.     GetDlgItem $1 $HWND 1211
  65.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Word):"
  66.     goto WordFindSend
  67.  
  68.     WordFind2Send:
  69.     StrCmp $0 "                           (Delimiter exclude)" 0 WordFind3Send
  70.     GetDlgItem $1 $HWND 1202
  71.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
  72.     GetDlgItem $1 $HWND 1204
  73.     SendMessage $1 ${WM_SETTEXT} 1 "STR:E-2{"
  74.     GetDlgItem $1 $HWND 1210
  75.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
  76.     GetDlgItem $1 $HWND 1211
  77.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Before{ or }after delimiter):"
  78.     goto WordFindSend
  79.  
  80.     WordFind3Send:
  81.     StrCmp $0 "                           (Sum of words)" 0 WordFind4Send
  82.     GetDlgItem $1 $HWND 1202
  83.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
  84.     GetDlgItem $1 $HWND 1204
  85.     SendMessage $1 ${WM_SETTEXT} 1 "STR:#"
  86.     GetDlgItem $1 $HWND 1210
  87.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  88.     GetDlgItem $1 $HWND 1211
  89.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Sum of words):"
  90.     goto WordFindSend
  91.  
  92.     WordFind4Send:
  93.     StrCmp $0 "                           (Sum of delimiters)" 0 WordFind5Send
  94.     GetDlgItem $1 $HWND 1202
  95.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|"
  96.     GetDlgItem $1 $HWND 1204
  97.     SendMessage $1 ${WM_SETTEXT} 1 "STR:E*"
  98.     GetDlgItem $1 $HWND 1210
  99.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  100.     GetDlgItem $1 $HWND 1211
  101.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Sum of delimiters):"
  102.     goto WordFindSend
  103.  
  104.     WordFind5Send:
  105.     StrCmp $0 "                           (Find word number)" 0 WordFind6Send
  106.     GetDlgItem $1 $HWND 1202
  107.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
  108.     GetDlgItem $1 $HWND 1204
  109.     SendMessage $1 ${WM_SETTEXT} 1 "STR:/Program Files"
  110.     GetDlgItem $1 $HWND 1210
  111.     SendMessage $1 ${WM_SETTEXT} 1 "STR:/Word"
  112.     GetDlgItem $1 $HWND 1211
  113.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Word #):"
  114.     goto WordFindSend
  115.  
  116.     WordFind6Send:
  117.     StrCmp $0 "                           ( }} )" 0 WordFind7Send
  118.     GetDlgItem $1 $HWND 1202
  119.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
  120.     GetDlgItem $1 $HWND 1204
  121.     SendMessage $1 ${WM_SETTEXT} 1 "STR:E+2}}"
  122.     GetDlgItem $1 $HWND 1210
  123.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
  124.     GetDlgItem $1 $HWND 1211
  125.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Before{{ or }}after word):"
  126.     goto WordFindSend
  127.  
  128.     WordFind7Send:
  129.     StrCmp $0 "                           ( {} )" 0 WordFind8Send
  130.     GetDlgItem $1 $HWND 1202
  131.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
  132.     GetDlgItem $1 $HWND 1204
  133.     SendMessage $1 ${WM_SETTEXT} 1 "STR:+2{}"
  134.     GetDlgItem $1 $HWND 1210
  135.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
  136.     GetDlgItem $1 $HWND 1211
  137.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Without word):"
  138.     goto WordFindSend
  139.  
  140.     WordFind8Send:
  141.     StrCmp $0 "                           ( *} )" 0 WordFind2XSend
  142.     GetDlgItem $1 $HWND 1202
  143.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
  144.     GetDlgItem $1 $HWND 1204
  145.     SendMessage $1 ${WM_SETTEXT} 1 "STR:E+2*}"
  146.     GetDlgItem $1 $HWND 1210
  147.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
  148.     GetDlgItem $1 $HWND 1211
  149.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Before{* or *}after word with word):"
  150.     goto WordFindSend
  151.  
  152.     WordFind2XSend:
  153.     StrCmp $0 "2. WordFind2X" 0 WordReplace1Send
  154.     GetDlgItem $1 $HWND 1201
  155.     SendMessage $1 ${WM_SETTEXT} 1 "STR:[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]"
  156.     GetDlgItem $1 $HWND 1202
  157.     SendMessage $1 ${WM_SETTEXT} 1 "STR:[C:\"
  158.     GetDlgItem $1 $HWND 1203
  159.     EnableWindow $1 1
  160.     SendMessage $1 ${WM_SETTEXT} 1 "STR:];"
  161.     GetDlgItem $1 $HWND 1204
  162.     SendMessage $1 ${WM_SETTEXT} 1 "STR:E+2"
  163.     GetDlgItem $1 $HWND 1207
  164.     SendMessage $1 ${WM_SETTEXT} 1 "STR:String"
  165.     GetDlgItem $1 $HWND 1208
  166.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter1"
  167.     GetDlgItem $1 $HWND 1209
  168.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter2"
  169.     GetDlgItem $1 $HWND 1210
  170.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
  171.     GetDlgItem $1 $HWND 1211
  172.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Word):"
  173.     abort
  174.  
  175.     WordReplace1Send:
  176.     StrCmp $0 "3. WordReplace (Replace)" 0 WordReplace2Send
  177.     GetDlgItem $1 $HWND 1201
  178.     SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\logo.sys|C:\WINDOWS"
  179.     GetDlgItem $1 $HWND 1202
  180.     SendMessage $1 ${WM_SETTEXT} 1 "STR:SYS"
  181.     GetDlgItem $1 $HWND 1203
  182.     SendMessage $1 ${WM_SETTEXT} 1 "STR:bmp"
  183.     GetDlgItem $1 $HWND 1204
  184.     SendMessage $1 ${WM_SETTEXT} 1 "STR:+2"
  185.     goto WordReplaceSend
  186.  
  187.     WordReplace2Send:
  188.     StrCmp $0 "                           (Delete)" 0 WordReplace3Send
  189.     GetDlgItem $1 $HWND 1201
  190.     SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\logo.sys|C:\WINDOWS"
  191.     GetDlgItem $1 $HWND 1202
  192.     SendMessage $1 ${WM_SETTEXT} 1 "STR:SYS"
  193.     GetDlgItem $1 $HWND 1203
  194.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  195.     GetDlgItem $1 $HWND 1204
  196.     SendMessage $1 ${WM_SETTEXT} 1 "STR:E+"
  197.     goto WordReplaceSend
  198.  
  199.     WordReplace3Send:
  200.     StrCmp $0 "                           (Multiple-replace)" 0 WordAdd1Send
  201.     GetDlgItem $1 $HWND 1201
  202.     SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys||||||C:\logo.sys|||C:\WINDOWS"
  203.     GetDlgItem $1 $HWND 1202
  204.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|"
  205.     GetDlgItem $1 $HWND 1203
  206.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|"
  207.     GetDlgItem $1 $HWND 1204
  208.     SendMessage $1 ${WM_SETTEXT} 1 "STR:+1*"
  209.     goto WordReplaceSend
  210.  
  211.     WordAdd1Send:
  212.     StrCmp $0 "4. WordAdd        (Add)" 0 WordAdd2Send
  213.     GetDlgItem $1 $HWND 1204
  214.     SendMessage $1 ${WM_SETTEXT} 1 "STR:+C:\WINDOWS|C:\config.sys|C:\IO.SYS"
  215.     GetDlgItem $1 $HWND 1211
  216.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String1 + String2):"
  217.     goto WordAddSend
  218.  
  219.     WordAdd2Send:
  220.     StrCmp $0 "                           (Delete) " 0 WordInsertSend
  221.     GetDlgItem $1 $HWND 1204
  222.     SendMessage $1 ${WM_SETTEXT} 1 "STR:E-C:\WINDOWS|C:\config.sys|C:\IO.SYS"
  223.     GetDlgItem $1 $HWND 1211
  224.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String1 - String2):"
  225.     goto WordAddSend
  226.  
  227.     WordInsertSend:
  228.     StrCmp $0 "5. WordInsert" 0 StrFilter1Send
  229.     GetDlgItem $1 $HWND 1201
  230.     SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\WINDOWS"
  231.     GetDlgItem $1 $HWND 1202
  232.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|"
  233.     GetDlgItem $1 $HWND 1203
  234.     EnableWindow $1 1
  235.     SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\logo.sys"
  236.     GetDlgItem $1 $HWND 1204
  237.     SendMessage $1 ${WM_SETTEXT} 1 "STR:E+2"
  238.     GetDlgItem $1 $HWND 1207
  239.     SendMessage $1 ${WM_SETTEXT} 1 "STR:String"
  240.     GetDlgItem $1 $HWND 1208
  241.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter"
  242.     GetDlgItem $1 $HWND 1209
  243.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Word"
  244.     GetDlgItem $1 $HWND 1210
  245.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
  246.     GetDlgItem $1 $HWND 1211
  247.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result:"
  248.     abort
  249.  
  250.     StrFilter1Send:
  251.     StrCmp $0 "6. StrFilter           (UpperCase)" 0 StrFilter2Send
  252.     GetDlgItem $1 $HWND 1201
  253.     SendMessage $1 ${WM_SETTEXT} 1 "STR:123abc 456DEF 7890|%#"
  254.     GetDlgItem $1 $HWND 1202
  255.     SendMessage $1 ${WM_SETTEXT} 1 "STR:+"
  256.     GetDlgItem $1 $HWND 1203
  257.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  258.     GetDlgItem $1 $HWND 1204
  259.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  260.     GetDlgItem $1 $HWND 1211
  261.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String in uppercase):"
  262.     goto StrFilterSend
  263.  
  264.     StrFilter2Send:
  265.     StrCmp $0 "                           (LowerCase)" 0 StrFilter3Send
  266.     GetDlgItem $1 $HWND 1201
  267.     SendMessage $1 ${WM_SETTEXT} 1 "STR:123abc 456DEF 7890|%#"
  268.     GetDlgItem $1 $HWND 1202
  269.     SendMessage $1 ${WM_SETTEXT} 1 "STR:-"
  270.     GetDlgItem $1 $HWND 1203
  271.     SendMessage $1 ${WM_SETTEXT} 1 "STR:ef"
  272.     GetDlgItem $1 $HWND 1204
  273.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  274.     GetDlgItem $1 $HWND 1211
  275.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String in lowercase except EF):"
  276.     goto StrFilterSend
  277.  
  278.     StrFilter3Send:
  279.     StrCmp $0 "                           (Filter)" 0 VersionCompareSend
  280.     GetDlgItem $1 $HWND 1201
  281.     SendMessage $1 ${WM_SETTEXT} 1 "STR:123abc 456DEF 7890|%#"
  282.     GetDlgItem $1 $HWND 1202
  283.     SendMessage $1 ${WM_SETTEXT} 1 "STR:+12"
  284.     GetDlgItem $1 $HWND 1203
  285.     SendMessage $1 ${WM_SETTEXT} 1 "STR:b"
  286.     GetDlgItem $1 $HWND 1204
  287.     SendMessage $1 ${WM_SETTEXT} 1 "STR:def"
  288.     GetDlgItem $1 $HWND 1211
  289.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String Digits + Letters + b - def):"
  290.     goto StrFilterSend
  291.  
  292.     VersionCompareSend:
  293.     StrCmp $0 "7. VersionCompare" 0 VersionConvertSend
  294.     GetDlgItem $1 $HWND 1201
  295.     SendMessage $1 ${WM_SETTEXT} 1 "STR:1.1.1.9"
  296.     GetDlgItem $1 $HWND 1202
  297.     SendMessage $1 ${WM_SETTEXT} 1 "STR:1.1.1.01"
  298.     GetDlgItem $1 $HWND 1203
  299.     ShowWindow $1 0
  300.     GetDlgItem $1 $HWND 1204
  301.     ShowWindow $1 0
  302.     GetDlgItem $1 $HWND 1206
  303.     EnableWindow $1 0
  304.     GetDlgItem $1 $HWND 1207
  305.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Version1"
  306.     GetDlgItem $1 $HWND 1208
  307.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Version2"
  308.     GetDlgItem $1 $HWND 1209
  309.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  310.     GetDlgItem $1 $HWND 1210
  311.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  312.     GetDlgItem $1 $HWND 1211
  313.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (0-equal 1-newer 2-older):"
  314.     abort
  315.  
  316.     VersionConvertSend:
  317.     StrCmp $0 "8. VersionConvert" 0 Abort
  318.     GetDlgItem $1 $HWND 1201
  319.     SendMessage $1 ${WM_SETTEXT} 1 "STR:9.0c"
  320.     GetDlgItem $1 $HWND 1202
  321.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  322.     GetDlgItem $1 $HWND 1203
  323.     ShowWindow $1 0
  324.     GetDlgItem $1 $HWND 1204
  325.     ShowWindow $1 0
  326.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  327.     GetDlgItem $1 $HWND 1206
  328.     EnableWindow $1 0
  329.     GetDlgItem $1 $HWND 1207
  330.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Version"
  331.     GetDlgItem $1 $HWND 1208
  332.     SendMessage $1 ${WM_SETTEXT} 1 "STR:CharList"
  333.     GetDlgItem $1 $HWND 1209
  334.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  335.     GetDlgItem $1 $HWND 1210
  336.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  337.     GetDlgItem $1 $HWND 1211
  338.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (numerical version format):"
  339.     abort
  340.  
  341.     Abort:
  342.     Abort
  343.  
  344.     WordFindSend:
  345.     GetDlgItem $1 $HWND 1203
  346.     EnableWindow $1 0
  347.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  348.     GetDlgItem $1 $HWND 1201
  349.     SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\logo.sys|C:\Program Files|C:\WINDOWS"
  350.     GetDlgItem $1 $HWND 1207
  351.     SendMessage $1 ${WM_SETTEXT} 1 "STR:String"
  352.     GetDlgItem $1 $HWND 1208
  353.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter"
  354.     GetDlgItem $1 $HWND 1209
  355.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  356.     Abort
  357.  
  358.     WordReplaceSend:
  359.     GetDlgItem $1 $HWND 1203
  360.     EnableWindow $1 1
  361.     GetDlgItem $1 $HWND 1207
  362.     SendMessage $1 ${WM_SETTEXT} 1 "STR:String"
  363.     GetDlgItem $1 $HWND 1208
  364.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Replace it"
  365.     GetDlgItem $1 $HWND 1209
  366.     SendMessage $1 ${WM_SETTEXT} 1 "STR:         with"
  367.     GetDlgItem $1 $HWND 1210
  368.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
  369.     GetDlgItem $1 $HWND 1211
  370.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result:"
  371.     Abort
  372.  
  373.     WordAddSend:
  374.     GetDlgItem $1 $HWND 1203
  375.     EnableWindow $1 0
  376.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  377.     GetDlgItem $1 $HWND 1201
  378.     SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\logo.sys|C:\WINDOWS"
  379.     GetDlgItem $1 $HWND 1202
  380.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|"
  381.     GetDlgItem $1 $HWND 1207
  382.     SendMessage $1 ${WM_SETTEXT} 1 "STR:String1"
  383.     GetDlgItem $1 $HWND 1208
  384.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter"
  385.     GetDlgItem $1 $HWND 1209
  386.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  387.     GetDlgItem $1 $HWND 1210
  388.     SendMessage $1 ${WM_SETTEXT} 1 "STR:String2"
  389.     Abort
  390.  
  391.     StrFilterSend:
  392.     GetDlgItem $1 $HWND 1203
  393.     EnableWindow $1 1
  394.     GetDlgItem $1 $HWND 1206
  395.     EnableWindow $1 0
  396.     GetDlgItem $1 $HWND 1207
  397.     SendMessage $1 ${WM_SETTEXT} 1 "STR:String"
  398.     GetDlgItem $1 $HWND 1208
  399.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Filter"
  400.     GetDlgItem $1 $HWND 1209
  401.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Include"
  402.     GetDlgItem $1 $HWND 1210
  403.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Exclude"
  404.     Abort
  405.  
  406. ;=Enter=
  407.     Enter:
  408.     StrCpy $0 ''
  409.     ReadINIStr $STATE $INI "Field 1" "State"
  410.     ReadINIStr $R1 $INI "Field 2" "State"
  411.     ReadINIStr $R2 $INI "Field 3" "State"
  412.     ReadINIStr $R3 $INI "Field 4" "State"
  413.     ReadINIStr $R4 $INI "Field 5" "State"
  414.  
  415.     StrCmp $STATE "1. WordFind        (Find word by number)" WordFind
  416.     StrCmp $STATE "                           (Delimiter exclude)" WordFind
  417.     StrCmp $STATE "                           (Find in string)" WordFind
  418.     StrCmp $STATE "                           (Sum of words)" WordFind
  419.     StrCmp $STATE "                           (Sum of delimiters)" WordFind
  420.     StrCmp $STATE "                           (Find word number)" WordFind
  421.     StrCmp $STATE "                           ( }} )" WordFind
  422.     StrCmp $STATE "                           ( {} )" WordFind
  423.     StrCmp $STATE "                           ( *} )" WordFind
  424.     StrCmp $STATE "2. WordFind2X" WordFind2X
  425.     StrCmp $STATE "3. WordReplace (Replace)" WordReplace
  426.     StrCmp $STATE "                           (Delete)" WordReplace
  427.     StrCmp $STATE "                           (Multiple-replace)" WordReplace
  428.     StrCmp $STATE "4. WordAdd        (Add)" WordAdd
  429.     StrCmp $STATE "                           (Delete) " WordAdd
  430.     StrCmp $STATE "5. WordInsert" WordInsert
  431.     StrCmp $STATE "6. StrFilter           (UpperCase)" StrFilter
  432.     StrCmp $STATE "                           (LowerCase)" StrFilter
  433.     StrCmp $STATE "                           (Filter)" StrFilter
  434.     StrCmp $STATE "7. VersionCompare" VersionCompare
  435.     StrCmp $STATE "8. VersionConvert" VersionConvert
  436.     Abort
  437.  
  438.     WordFind:
  439.     ${WordFind} "$R1" "$R2" "$R4" $R0
  440.     IfErrors 0 Send
  441.     StrCpy $0 $R0
  442.     StrCmp $R0 3 0 +3
  443.     StrCpy $3 '"+1" "-1" "+1}" "+1{" "#" "/word"'
  444.     goto error3
  445.     StrCmp $R0 2 0 error1
  446.     StrCpy $R4 $R4 '' 1
  447.     StrCpy $1 $R4 1
  448.     StrCmp $1 / 0 error2
  449.     StrCpy $R4 $R4 '' 1
  450.     StrCpy $R0 '"$R4" no such word.'
  451.     goto Send
  452.  
  453.     WordFind2X:
  454.     ${WordFind2X} "$R1" "$R2" "$R3" "$R4" $R0
  455.     IfErrors 0 Send
  456.     StrCpy $0 $R0
  457.     StrCmp $R0 3 0 +3
  458.     StrCpy $3 '"+1" "-1"'
  459.     goto error3
  460.     StrCmp $R0 2 +3
  461.     StrCpy $R0 '"$R2...$R3" no words found.'
  462.     goto Send
  463.     StrCpy $R4 $R4 '' 1
  464.     StrCpy $1 $R4 1
  465.     StrCmp $1 / 0 +2
  466.     StrCpy $R4 $R4 '' 1
  467.     StrCpy $R0 '"$R4" no such word.'
  468.     goto Send
  469.  
  470.     WordReplace:
  471.     ${WordReplace} "$R1" "$R2" "$R3" "$R4" $R0
  472.     IfErrors 0 Send
  473.     StrCpy $0 $R0
  474.     StrCmp $R0 3 0 +3
  475.     StrCpy $3 '"+1" "+1*" "+" "+*" "{}"'
  476.     goto error3
  477.     StrCmp $R0 2 0 error1
  478.     StrCpy $R4 $R4 '' 1
  479.     goto error2
  480.  
  481.     WordAdd:
  482.     ${WordAdd} "$R1" "$R2" "$R4" $R0
  483.     IfErrors 0 Send
  484.     StrCpy $0 $R0
  485.     StrCmp $R0 3 0 error1empty
  486.     StrCpy $3 '"+text" "-text"'
  487.     goto error3
  488.  
  489.     WordInsert:
  490.     ${WordInsert} "$R1" "$R2" "$R3" "$R4" $R0
  491.     IfErrors 0 Send
  492.     StrCpy $0 $R0
  493.     StrCmp $R0 3 0 +3
  494.     StrCpy $3 '"+1" "-1"'
  495.     goto error3
  496.     StrCmp $R0 2 0 error1empty
  497.     StrCpy $R4 $R4 '' 1
  498.     goto error2
  499.  
  500.     StrFilter:
  501.     ${StrFilter} "$R1" "$R2" "$R3" "$R4" $R0
  502.     IfErrors 0 Send
  503.     StrCpy $R0 'Syntax error'
  504.     goto Send
  505.  
  506.     VersionCompare:
  507.     ${VersionCompare} "$R1" "$R2" $R0
  508.     goto Send
  509.  
  510.     VersionConvert:
  511.     ${VersionConvert} "$R1" "$R2" $R0
  512.     goto Send
  513.  
  514.     error3:
  515.     StrCpy $R0 '"$R4" syntax error ($3)'
  516.     goto Send
  517.     error2:
  518.     StrCpy $R0 '"$R4" no such word number'
  519.     goto Send
  520.     error1empty:
  521.     StrCpy $R0 '"$R2" delimiter is empty'
  522.     goto Send
  523.     error1:
  524.     StrCpy $R0 '"$R2" delimiter not found in string'
  525.     goto Send
  526.  
  527.     Send:
  528.     GetDlgItem $1 $HWND 1205
  529.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$R0"
  530.     GetDlgItem $1 $HWND 1206
  531.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$0"
  532.     abort
  533. FunctionEnd
  534.  
  535. Function .onInit
  536.     InitPluginsDir
  537.     GetTempFileName $INI $PLUGINSDIR
  538.     File /oname=$INI "WordFunc.ini"
  539. FunctionEnd
  540.  
  541. Page instfiles
  542.  
  543. Section "Empty"
  544. SectionEnd
  545.